package com.itcam.cm.common.exception;

import com.itcam.cm.model.vo.common.ResultCodeEnum;
import lombok.Data;

/**
 * Lombok 注解，自动生成 getter、setter、toString、equals 和 hashCode 方法
 */
@Data
/**
 * ItcamException 类继承自 RuntimeException，用于表示自定义的业务异常
 * 该异常包含错误状态码、错误消息以及封装了错误状态码和错误消息的枚举对象
 */
public class ItcamException extends RuntimeException {

    // 错误状态码
    private Integer code;
    // 错误消息
    private String message;
    // 封装错误状态码和错误消息的枚举对象
    private ResultCodeEnum resultCodeEnum;

    /**
     * 构造函数，使用 ResultCodeEnum 枚举对象创建异常实例
     * @param resultCodeEnum 包含错误状态码和错误消息的枚举对象
     */
    public ItcamException(ResultCodeEnum resultCodeEnum) {
        // 将传入的枚举对象赋值给类的成员变量
        this.resultCodeEnum = resultCodeEnum;
        // 从枚举对象中获取错误状态码并赋值给类的成员变量
        this.code = resultCodeEnum.getCode();
        // 从枚举对象中获取错误消息并赋值给类的成员变量
        this.message = resultCodeEnum.getMessage();
    }

    /**
     * 构造函数，使用错误状态码和错误消息创建异常实例
     * @param code 错误状态码
     * @param message 错误消息
     */
    public ItcamException(Integer code, String message) {
        // 将传入的错误状态码赋值给类的成员变量
        this.code = code;
        // 将传入的错误消息赋值给类的成员变量
        this.message = message;
    }

}
